今天將實戰「用 Docker Compose 方式部署 n8n」,教你打造生產等級、便於維護與升級的自動化平台。一份完善的部署流程不僅能提升開發效率,也為未來擴充與備份做好準備。
使用 Docker Compose 可一鍵管理 n8n 服務、資料儲存路徑與網路連線,支援以下目標:
建立資料夾
mkdir -p ~/n8n-docker
cd ~/n8n-docker
建立 docker-compose.yml
最小化版本如下:
version: '3.8'
services:
  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - "5678:5678"
    environment:
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=youruser
      - N8N_BASIC_AUTH_PASSWORD=yourpassword
      - N8N_HOST=yourdomain.com
      - N8N_PROTOCOL=https
      - WEBHOOK_TUNNEL_URL=https://yourdomain.com/
    volumes:
      - ./n8n_data:/home/node/.n8n
修改
N8N_BASIC_AUTH_USER與N8N_BASIC_AUTH_PASSWORD,保證安全性。若有網域可以加上自訂參數,未來對接 SSL 較方便。
推薦使用 PostgreSQL 取代 SQLite,提升效能與可靠性。
version: '3.8'
services:
  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - "5678:5678"
    environment:
      - GENERIC_TIMEZONE=Asia/Taipei
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=youruser
      - N8N_BASIC_AUTH_PASSWORD=yourpassword
      - N8N_DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=yourdbpassword
      - N8N_HOST=yourdomain.com
      - N8N_PROTOCOL=https
      - WEBHOOK_TUNNEL_URL=https://yourdomain.com/
    depends_on:
      - postgres
    volumes:
      - ./n8n_data:/home/node/.n8n
  postgres:
    image: postgres:14
    restart: always
    environment:
      - POSTGRES_USER=n8n
      - POSTGRES_PASSWORD=yourdbpassword
      - POSTGRES_DB=n8n
    volumes:
      - ./postgres_data:/var/lib/postgresql/data
在同一目錄下執行:
docker-compose up -d
http://yourdomain.com:5678
建議使用 Nginx Proxy Manager、Caddy 或原生 Nginx 反向代理,取得 Let's Encrypt SSL 憑證。
Nginx 設定簡例:
server {
    listen 80;
    server_name yourdomain.com;
    location / {
        proxy_pass http://localhost:5678;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
完成 SSL 設定後,將 N8N_PROTOCOL 設為 https,來啟用 webhook 與 OAuth 的正確回調。
docker-compose pull
docker-compose up -d
./n8n_data 和 ./postgres_data 兩個資料夾。.env 檔案統一管理,不建議密碼寫死在 yml 裡。N8N_HOST 或 SSL 設錯,請再次檢查。透過 Docker Compose,不僅可獲得高度客製化的部署,同時方便維護、易於遷移與升級。跟著今天的步驟,每個自動化 workflow 都能在專業的環境順利運行,真正做到低代碼、高可靠的自動化新時代。